package com.xinqi.modules.user.users.user.manager;

import com.xinqi.modules.user.user.domain.UserEntity;
import com.xinqi.modules.user.user.dto.req.SearchFriendDTO;
import com.xinqi.modules.user.user.dto.rsp.SearchFriendResultDTO;
import com.xinqi.modules.user.user.dto.rsp.UserLoginResultDTO;
import com.xinqi.common.mybatis.data.service.BaseService;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 用户信息管理层
 *
 * @author: wenjie
 * @date: 2023/05/17
 */
public interface UserManager extends BaseService<UserEntity> {

    /**
     * 根据id查询 用户信息数据
     */
    UserEntity findById(Long id);

    /**
     * 根据id删除 用户信息数据
     */
    @Transactional(rollbackFor = Exception.class)
    boolean deleteById(Long id);

    /**
     * 根据手机号码查询，包含已注销
     *
     * @param mobile
     * @return
     */
    List<UserEntity> findByMobileIncludeDelete(String mobile);

    /**
     * 关键字搜索 -- 新奇号、手机号精准查询
     *
     * @param dto
     * @return
     */
    List<SearchFriendResultDTO> selectUsersByKeyword(SearchFriendDTO dto);


    /**
     * 登录查询用户所有信息
     * @param mobile
     * @return
     */
    UserLoginResultDTO selectUserLoginByMobile(String mobile);

    /**
     * 登录查询用户所有信息通过ID
     * @param id
     * @return
     */
    UserLoginResultDTO selectUserLoginById(Long id);



}
